<?php
declare(strict_types=1);

namespace app\common\business;


use app\common\lib\ClassArr;
use app\common\lib\Num;
use app\common\lib\sms\AliSms;

class Sms
{
    public static function sendCode(string $phoneNumber, int $len, string $type = 'ali') :bool{
        // 生成短信验证码4位
        $code = Num::getCode($len);
        // cache(config("redis.code_pre").$phoneNumber, $code, config("redis.code_expire"));
        // die;
        // 简单工厂模式
        /*$type = ucfirst($type);
        $class = "app\common\lib\sms\\".$type."Sms";
        $sms = $class::sendCode($phoneNumber, $code);*/
        // 反射工厂模式
        $classStat = ClassArr::smsClassStat();
        $classObj = ClassArr::initClass($type, $classStat);
        $sms = $classObj::sendCode($phoneNumber, $code);
        if($sms){
            // 记录短信验证码到redis 并且需要给出一个失效时间60s
            // 1 PHP环境是否有Redis扩展
            // 2 Redis服务是否安装
            cache(config("redis.code_pre").$phoneNumber, $code, config("redis.code_expire"));
        }
        return $sms;
    }
}
